package com.jic.market.service;

import com.jic.market.request.manager.lottery.*;
import com.jic.market.entity.LotteryTheme;
import com.jic.market.request.manager.lottery.LotteryActivityRequest;
import com.jic.market.request.manager.lottery.LotteryAwardsListRequest;
import com.jic.market.request.manager.lottery.LotteryThemeRequest;
import com.jic.market.response.manager.lottery.LotteryActivityResponse;

import java.util.List;

/**
* 抽奖活动信息表
* @author : 
* @email : 
* @since : 2020-03-03 03:06:48
* @version : v1.0.0
*/
public interface LotteryActivityService {


    /**
     * 抽奖活动详情查询
     * @param request
     * @return id
     */
    LotteryActivityResponse getLotteryActivityInfo(LotteryThemeRequest request);

    /**
     * 保存
     * @param lotteryActivityRequest
     * @return id
     */
    long saveLotteryActivity(LotteryActivityRequest lotteryActivityRequest);

    /**
     * 保存抽奖活动-奖项设置
     * @param lotteryAwardsListRequest
     * @return
     */
    Integer saveLotteryAwards(LotteryAwardsListRequest lotteryAwardsListRequest);

    /**
     * 编辑-抽奖活动规则设置
     * @param lotteryActivityRequest
     * @return id
     */
    long updateLotteryActivity(LotteryActivityRequest lotteryActivityRequest);

    /**
     * 编辑-抽奖活动奖项设置
     * @param lotteryAwardsListRequest
     * @return id
     */
    Integer updateLotteryAwards(LotteryAwardsListRequest lotteryAwardsListRequest);

    /**
     * 复制一条抽奖活动
     * @param lotteryActivityRequest
     */
    long copyLotteryActivity(LotteryActivityRequest lotteryActivityRequest);

    /**
     * 保存抽奖模板
     * @param lotteryActivityRequest
     */
    Long saveTemplate(LotteryTemplateRequest lotteryActivityRequest);

    /**
     *
     * 删除抽奖活动
     * 逻辑删除
     * @param lotteryActivityRequest
     * @return id
     */
    void deleteLotteryActivity(LotteryActivityRequest lotteryActivityRequest);

    /**
     * 审核抽奖活动
     * 根据当前时间及活动时间
     * 变更状态
     * @param lotteryThemeRequest
     */
    void verifyLotteryActivity(LotteryThemeRequest lotteryThemeRequest);

    /**
     * 根据主键查询 LotteryTheme
     * @param id
     * @return
     */
    LotteryTheme queryByPrimaryKey(Long id);

    /**
     * 根据 promotionCode 查询 LotteryTheme
     * @param promotionCode
     * @return
     */
    LotteryTheme queryByPromotionCode(String promotionCode);

}